package com.haoze.nurseapp.dao;

import com.haoze.nurseapp.dto.task.TaskExecuteDetailDTO;
import com.haoze.common.model.OrdersFileIndexDataEntity;
import com.haoze.common.model.OrdersFileIndexEntity;
import com.haoze.nurseapp.model.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface TransfusionMapper {
    /**
     * 根据barCode或QrCode获取当前病人入院号
     *
     * @param qrCode
     * @return
     */
    String queryInfoByBarCode(@Param("qrCode") String qrCode);

    Map<String, String> queryPatientInfo(String inpatNum);

    List<Map<String, String>> queryAdmissionDiagnosis(String inpatNum);

    List<Map<String, Object>> queryEmrFileIds(@Param("inpatNum") String inpatNum,
                                              @Param("nodeId") String nodeId);

    /**
     * 已废弃,请使用 queryTaskExecuteDetailInfo
     * @param barCode
     * @param nodeId
     * @return
     */
    @Deprecated
    TaskExecuteDetailEntity queryTaskExecuteDetail(@Param("barCode") String barCode, @Param("nodeId") String nodeId);

    /**
     * 查询医嘱执行状态
     * @param barCode 二维码
     * @param nodeId 节点id
     * @return
     */
    TaskExecuteDetailDTO queryTaskExecuteDetailInfo(@Param("barCode") String barCode, @Param("nodeId") String nodeId);



    List<FileIndexDataSmallEntity> getFileIndexData(@Param("emrFileIds") List<Map<String, Object>> emrFileIds);

    List<Map<String, String>> queryDurgsByOrderNo(@Param("inpatNum") String inpatNum,
                                                  @Param("taskExecuteId") String taskExecuteId);

    String queryNodeState(@Param("qrCode") String qrCode);

    /**
     * 获取退药原因
     *
     * @return
     */
    List<Map<String, String>> queryDict();

    /**
     * 根据qrCode和nodeId获取emrFileId
     *
     * @param qrCode
     * @param nodeId
     * @return
     */
    String queryEmrFileId(@Param("qrCode") String qrCode, @Param("nodeId") String nodeId);

    /**
     * 根据父节点获取文书块内容
     *
     * @param fileIndexDataId
     * @return
     */
    List<FileIndexDataEntity> queryIndexDatasByParentId(@Param("fileIndexDataId") String fileIndexDataId);

    /**
     * 查询当前用户
     *
     * @param userId
     * @return
     */
    Map<String, String> getUser(@Param("userId") String userId);

    /**
     * 根据varCode获取对应的varValue
     *
     * @param endCode
     * @return
     */
    String queryVarvalue(String endCode);

    /**
     * 根据文书ID获取文书明细
     *
     * @param emrFileId
     * @param typeValue
     * @return
     */
    List<FileIndexDataEntity> queryFileIndexData(@Param("emrFileId") String emrFileId, @Param("typeValue") String typeValue);

    List<FileIndexDataEntity> getAllFileIndexData(@Param("emrFileId") String emrFileId);

    /**
     * 根据qrCode获取对应的文书明细数据
     *
     * @param qrCode
     * @param endToolValue
     * @param endLocationValue
     * @param endNodeValue
     * @return
     */
    List<OrdersFileIndexEntity> queryReturnInfo(@Param("qrCode") String qrCode, @Param("endToolValue") String endToolValue, @Param("endLocationValue") String endLocationValue, @Param("endNodeValue") String endNodeValue);

    List<Map<String, String>> queryDictByVarCode(String varCode);

    /**
     * 根据文书ID获取当前任务流程ID
     *
     * @param emrFileId
     * @return
     */
    String queryTaskExecuteId(String emrFileId);

    /**
     * 根据文书ID获取当前病人入院号
     *
     * @param emrFileId
     * @return
     */
    String getInpatNum(String emrFileId);

    /**
     * 获取当前滴速
     *
     * @param emrFileId
     * @param parentFileIndexDataId
     * @param speedCode
     * @return
     */
    String queryFileIndexDataSpeed(@Param("emrFileId") String emrFileId, @Param("parentFileIndexDataId") String parentFileIndexDataId, @Param("speedCode") String speedCode);

    /**
     * 根据文书ID和element_id获取最近一条输液滴速标签明细
     *
     * @param emrFileId
     * @param typeValue
     * @return
     */
    FileIndexDataEntity queryFileIndexDataSpeedType(@Param("emrFileId") String emrFileId, @Param("typeValue") String typeValue);

    /**
     * 获取当前qrCode对应的输液中心文书中的穿刺点明细数据
     *
     * @param qrCode
     * @param nodeId
     * @param varValue
     * @return
     */
    FileIndexDataEntity queryPunctureInfo(@Param("qrCode") String qrCode, @Param("nodeId") String nodeId, @Param("varValue") String varValue);

    /**
     * 获取用户负责病区
     *
     * @param userId
     * @return
     */
    List<Map<String, String>> getDepts(@Param("userId") String userId,@Param("id") String id,@Param("keyWords") String keyWords);

    /**
     * 获取输液结束方式字典
     *
     * @return
     */
    List<Map<String, String>> queryEndInfusionType();

    /**
     * 根据文书ID获取全部文书明细
     *
     * @param emrFileId
     * @return
     */
    List<OrdersFileIndexDataEntity> queryFileIndexList(String emrFileId);

    /**
     * 获取输液中心执行任务
     *
     * @param inpatNum
     * @param nodeId
     * @return
     */
    List<Map<String, Object>> queryInfusionCenterEmrFileIds(@Param("inpatNum") String inpatNum,
                                                            @Param("nodeId") String nodeId);

    List<Map<String, String>> queryDurgsByInpatOrderId(@Param("inpatOrderId") String inpatOrderId);

    String queryInfusionBeginTime(@Param("taskExecuteId") String taskExecuteId, @Param("nodeId") String nodeId);
}
